/*
 * FrameGraficoTorta.cpp
 *
 *  Created on: 11/06/2012
 *      Author: sebastian
 */

#include "FrameGraficoBarras.h"

#include <string>
#include <fstream>
#include <iostream>
#include <list>
#include "Consulta.h"
#include "Util.h"

FrameGraficoBarras::FrameGraficoBarras() {
	set_border_width(2);
	//set_size_request(250,250);
}



FrameGraficoBarras::~FrameGraficoBarras() {
	delete graf;
}

bool FrameGraficoBarras::mostrar() {
	graf->show();
	show();
	return true;
}


/*
int main(int argc, char** argv) {
	Gtk::Main kit(argc, argv);
	FrameGraficoBarras frame;
	std::string s1("0#Gonzalo|1800|1900");
	std::string s2("0#Carlos|1900|2100");
	std::string s3("0#Lorena|3100|1500");
	std::list<std::string> respuesta;
	respuesta.push_back(s1);
	respuesta.push_back(s2);
	respuesta.push_back(s3);
	frame.setRespuesta(respuesta);
	Gtk::Window win;
	win.set_title("Grafico de Barras");
	win.add(frame);
	frame.mostrar();
	Gtk::Main::run(win);
	return 0;
}
*/
void FrameGraficoBarras::setRespuesta(std::list<std::string> lineasRes) {
	std::list<std::string>::iterator it;
	graf = new GraficoBarras();		//  buscar forma de que no pierda memoria
	for(it = lineasRes.begin(); it != lineasRes.end(); ++it) {
		std::vector<std::string> atribs;
		Auxiliar::parseLine(*it, atribs);
		std::vector<std::string>::iterator it_atrib = atribs.begin();
		std::list<unsigned int>* valores = new list<unsigned int>;

		int pos;
		std::string nombre;
		Auxiliar::parseAtrib(atribs[0], nombre, pos);
		++it_atrib;
		for(int i = 1; it_atrib != atribs.end(); ++it_atrib, ++i) {
			std::string valor_string;
			int pos_valor;
			Auxiliar::parseAtrib(atribs[i], valor_string, pos_valor);
			if(Auxiliar::validarHecho(valor_string)) {
				valores->push_back(Auxiliar::stoi(valor_string));
			}
		}
		graf->agregarBarras(*valores, nombre);
	}
	graf->agregarNombre("Ventas");
	graf->agregarNombre("Compras");
	graf->agregarNombre("Precio");
	graf->agregarNombre("Precio Venta");
	remove();
	add(*graf);
	graf->show();
}
